/* Copyright 203-2115 AtomWare Technology Pty Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * The flowing information must be keep 
 * LawContractManagerFunction.java
 * lawcontract
 * 2013-7-25下午5:10:17
 * @author 屈甲康
 * QQ285799123
 * mailto:qujiakang@gmail.com
 */

package org.jackysoft.opensymphony.workflow.util;

import java.util.Map;

import javax.annotation.Resource;

import org.jackysoft.entity.HibernateWorkflowEntry;
import org.jackysoft.entity.LawContract;
import org.jackysoft.entity.OfficeDocument;
import org.jackysoft.entity.User;
import org.jackysoft.entity.Variable;
import org.jackysoft.opensymphony.workflow.WorkflowException;
import org.jackysoft.service.LawContractService;
import org.jackysoft.service.OfficeDataRegionService;
import org.jackysoft.service.UserService;
import org.jackysoft.service.VariableService;
import org.jackysoft.util.WorkflowConstant;
import org.springframework.stereotype.Component;

@Component("manager")
public class LawContractManagerFunction extends AbstractFunctionProvider {

	private OfficeDataRegionService dataService;
	private LawContractService lawService;
	private UserService userService;
	@Override
	public void execute(Map<String, Object> transientVars,
			Map<String, String> args, VariableService vservice)
			throws WorkflowException {
        
		LawContract bean = new LawContract();
		HibernateWorkflowEntry entry  =  (HibernateWorkflowEntry) transientVars.get("entry");
        OfficeDocument office = entry.getOfficeDocument();
        bean.setData(office.getData());
	    bean.setWorkflowId(entry.getId());
	    bean.setWorkflowName(entry.getWorkflowName());
	    Variable var = vservice.get(entry.getId(), WorkflowConstant.STARTER_USERID.toString());
	    String userid = var.getValue();
	    User starter = userService.get(userid);
	    bean.setStarter(starter);  
	    lawService.create(bean);
	}
	
	@Resource
	public void setDataService(OfficeDataRegionService dataService) {
		this.dataService = dataService;
	}
	
	@Resource
	public void setLawService(LawContractService lawService) {
		this.lawService = lawService;
	}

	@Resource
	public void setUserService(UserService userService) {
		this.userService = userService;
	}

}
